﻿using System;
using System.Collections.Generic;
using Sebrae.Academico.Trilhas.BM.Classes;
using Sebrae.Academico.Trilhas.Dominio.Classes;

namespace Sebrae.Academico.Trilhas.BP
{
    public class ManterTrilhaTopicoTematico : BusinessProcessBase
    {
        private BMTrilhaTopicoTematico trilhaTopicoTematico = null;


        public ManterTrilhaTopicoTematico()
            : base()
        {
            trilhaTopicoTematico = new BMTrilhaTopicoTematico(unitOfWork);
        }

        public void IncluirTrilhaTopicoTematico(TrilhaTopicoTematico pTrilhaTopicoTematico)
        {
            trilhaTopicoTematico.ValidarTrilhaTopicoTematicoInformado(pTrilhaTopicoTematico);

            IList<TrilhaTopicoTematico> trilhaTopico = ObterTrilhaTopicoTematicoPorNome(pTrilhaTopicoTematico.Nome);

            if (trilhaTopico != null && trilhaTopico.Count > 0) throw new Exception("Este Tópico Temático Já está Cadastrado !");

            trilhaTopicoTematico.Incluir(pTrilhaTopicoTematico);
        }

        public void AlterarTrilhaTopicoTematico(TrilhaTopicoTematico pTrilhaTopicoTematico)
        {
            trilhaTopicoTematico.ValidarTrilhaTopicoTematicoInformado(pTrilhaTopicoTematico);
            trilhaTopicoTematico.Alterar(pTrilhaTopicoTematico);
        }
        
        public IList<TrilhaTopicoTematico> ObterTrilhaTopicoTematicoPorNome(string pNome)
        {
            if (string.IsNullOrWhiteSpace(pNome)) throw new Exception("Informe o Nome");
            return trilhaTopicoTematico.ObterTrilhaTopicoTematicoPorNome(pNome);
        }

        public void ExcluirTrilhaTopicoTematico(TrilhaTopicoTematico pTrilhaTopicoTematico)
        {
            trilhaTopicoTematico.ExcluirTrilhaTopicoTematico(pTrilhaTopicoTematico);
        }

        public IList<TrilhaTopicoTematico> ObterTodosTrilhaTopicoTematico()
        {
            return trilhaTopicoTematico.ObterTodos();
        }

        public TrilhaTopicoTematico ObterTrilhaTopicoTematicoPorID(int pId)
        {
            return trilhaTopicoTematico.ObterPorID(pId);
        }

        public IList<TrilhaTopicoTematico> ObterTrilhaTopicoTematicoPorFiltro(TrilhaTopicoTematico ptrilhaTopicoTematico)
        {
            return trilhaTopicoTematico.ObterPorFiltro(ptrilhaTopicoTematico);
        }
    }
}
